import UIKit

@available(iOS 6.0, *)
extension QKC where AA :UIActivity {
		// default returns nil. subclass may override to return custom activity type that is reported to completion handler
    open func activityType_qk_g() -> QKC<AA,YY,ZZ, UIActivity.ActivityType? >{
		 self +^ self.value.activityType
	}

		// default returns nil. subclass must override and must return non-nil value
    open func activityTitle_qk_g() -> QKC<AA,YY,ZZ, String? >{
		 self +^ self.value.activityTitle
	}

		// default returns nil. subclass must override and must return non-nil value
    open func activityImage_qk_g() -> QKC<AA,YY,ZZ, UIImage? >{
		 self +^ self.value.activityImage
	}

		// return non-nil to have view controller presented modally. call activityDidFinish at end. default returns nil
    open func activityViewController_qk_g() -> QKC<AA,YY,ZZ, UIViewController? >{
		 self +^ self.value.activityViewController
	}

		// override this to return availability of activity based on items. default returns NO
    open func canPerform_qk_f(withActivityItems activityItems: [Any]) -> QKC<AA,YY,ZZ,Bool >{
		 self +^ self.value.canPerform(withActivityItems:activityItems)
	}

		// override to extract items and set up your HI. default does nothing
    open func prepare_qk_f(withActivityItems activityItems: [Any]) -> QKC<AA,YY,ZZ, [Any]>{
		 self +^ self.value.prepare(withActivityItems:activityItems) +^ activityItems
	}

		// if no view controller, this method is called. call activityDidFinish when done. default calls [self activityDidFinish:NO]
    open func perform_qk_f() -> QKC<AA,YY,ZZ,Void>{
		 self +^ self.value.perform()
	}

	// state method
		// activity must call this when activity is finished
    open func activityDidFinish_qk_f(_ completed: Bool) -> QKC<AA,YY,ZZ, Bool>{
		 self +^ self.value.activityDidFinish(completed) +^ completed
	}

}

